package sv.gob.mh.dgii.model;

// Generated Dec 12, 2007 1:25:05 PM by Hibernate Tools 3.2.0.CR1

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * RcDocIdentidad generated by hbm2java
 */
@Entity
@Table(name = "RC_DOC_IDENTIDAD", schema = "RUC")
@SequenceGenerator(name="SEQ_RC_DOC_IDENTIDAD" , sequenceName="SEQ_RC_DOC_IDENTIDAD")
public class RcDocIdentidad implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 343258616879977481L;
	private Long crcDocIdentidad;	
	private String nit;
	private TbDocIdentidad tbDocIdentidad;
	private String ndocIdentidad;
	private Date fhingreso;
	private String nfolio;
	private Boolean bactivo;

	public RcDocIdentidad() {
	}

	public RcDocIdentidad(Long crcDocIdentidad, String nit,
			TbDocIdentidad tbDocIdentidad, Date fhingreso) {
		this.crcDocIdentidad = crcDocIdentidad;
		this.nit = nit;
		this.tbDocIdentidad = tbDocIdentidad;
		this.fhingreso = fhingreso;
	}

	public RcDocIdentidad(Long crcDocIdentidad,String nit,
			TbDocIdentidad tbDocIdentidad, String ndocIdentidad,
			Date fhingreso, String nfolio) {
		this.crcDocIdentidad = crcDocIdentidad;
		this.nit = nit;
		this.tbDocIdentidad = tbDocIdentidad;
		this.ndocIdentidad = ndocIdentidad;
		this.fhingreso = fhingreso;
		this.nfolio = nfolio;
	}

	@Id
	@Column(name = "C_RC_DOC_IDENTIDAD", unique = true, nullable = false, precision = 10, scale = 0)
	@GeneratedValue(strategy=GenerationType.AUTO, generator="SEQ_RC_DOC_IDENTIDAD")
	public Long getCrcDocIdentidad() {
		return this.crcDocIdentidad;
	}

	public void setCrcDocIdentidad(Long crcDocIdentidad) {
		this.crcDocIdentidad = crcDocIdentidad;
	}

	


	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "C_DOC_IDENTIDAD", nullable = false)
	public TbDocIdentidad getTbDocIdentidad() {
		return this.tbDocIdentidad;
	}

	public void setTbDocIdentidad(TbDocIdentidad tbDocIdentidad) {
		this.tbDocIdentidad = tbDocIdentidad;
	}

	@Column(name = "N_DOC_IDENTIDAD", length = 20)
	public String getNdocIdentidad() {
		return this.ndocIdentidad;
	}

	public void setNdocIdentidad(String ndocIdentidad) {
		this.ndocIdentidad = ndocIdentidad;
	}

	
	@Column(name = "B_ACTIVO", nullable = false, precision = 1, scale = 0)
	public Boolean getBactivo() {
		return bactivo;
	}

	public void setBactivo(Boolean bactivo) {
		this.bactivo = bactivo;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "FH_INGRESO", nullable = false, length = 7)
	public Date getFhingreso() {
		return this.fhingreso;
	}

	public void setFhingreso(Date fhingreso) {
		this.fhingreso = fhingreso;
	}

	@Column(name = "N_FOLIO", length = 12)
	public String getNfolio() {
		return this.nfolio;
	}

	public void setNfolio(String nfolio) {
		this.nfolio = nfolio;
	}

	/**
	 * @return the nit
	 */
	@Column(name = "NIT", length = 14)
	public String getNit() {
		return nit;
	}

	/**
	 * @param nit the nit to set
	 */
	public void setNit(String nit) {
		this.nit = nit;
	}

    
    public int hashCode() {
        int hash = 7;
        hash = 53 * hash + (this.tbDocIdentidad != null ? this.tbDocIdentidad.hashCode() : 0);
        hash = 53 * hash + (this.ndocIdentidad != null ? this.ndocIdentidad.hashCode() : 0);
        return hash;
    }

    /**
     * Utilizado en el RUC para determinar si un documento es el mismo
     * Solo se comparan el tipo y numero de documento.
     * @param obj
     * @return 
     */
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final RcDocIdentidad other = (RcDocIdentidad) obj;
        if (this.tbDocIdentidad != other.tbDocIdentidad && (this.tbDocIdentidad == null || !this.tbDocIdentidad.equals(other.tbDocIdentidad))) {
            return false;
        }
        if ((this.ndocIdentidad == null) ? (other.ndocIdentidad != null) : !this.ndocIdentidad.equals(other.ndocIdentidad)) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "RcDocIdentidad{" + "crcDocIdentidad=" + crcDocIdentidad + ", nit=" + nit + ", tbDocIdentidad=" + tbDocIdentidad + ", ndocIdentidad=" + ndocIdentidad + ", fhingreso=" + fhingreso + ", nfolio=" + nfolio + ", bactivo=" + bactivo + '}';
    }
        
    
}
